class MyClass<T>{

}
public class Main {
    public static void main(String[] args) {
        MyClass<Integer> obj1 = new MyClass<>();
        MyClass<String> obj2 = new MyClass<>();
        MyClass<Integer> obj3 = new MyClass<>();

        obj1 = obj3;//正常
        //obj1 = obj2;//错误
        MyClass<?> obj4 = obj3;
        MyClass<? extends Number> obj5 = obj1;
        obj5 = obj2;
        //这个代码不符合要求，约定obj5的通配符，只能匹配到Number和它的子类;
        //因为通配符只能在泛型实例化时使用
        MyClass<? super Integer> obj6 = obj1;//此处的通配符只能匹配到Integer和它的父类
        obj6 = new MyClass<double>();//double并不是Integer的子类，所以会报错
        obj6 = new MyClass<Number>();//Number是Integer的父类。
    }
}